﻿// -----------------------------------------------------------------------
// <copyright file="AnimalBase.cs" company="Softserve">
// TODO: Update copyright text.
// </copyright>
// -----------------------------------------------------------------------

namespace SoftServe.AnimalLibrary.Abstract
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    /// <summary>
    /// TODO: Update summary.
    /// </summary>
    public abstract class AnimalBase
    {
        #region Constuctor
        protected AnimalBase()
        {
            Speed = 0;
        }
        protected AnimalBase(string name)
            : this()
        {
            Name = name;
        }
        protected AnimalBase(string name, byte age) 
            : this(name)
        {
            Age = age;
        }
        #endregion
        #region Properties

        public byte Age
        {
            get { return mAge; }
            set { mAge = value; }
        }

        public string Name
        {
            get { return mName; }
            set { mName = value; }
        }
        
        public double Length
        {
            get { return mLength; }
            set { mLength = value; }
        }

        public double Weight
        {
            get { return mWeight; }
            set { mWeight = value; }
        }


        public double Speed
        {
            get { return mSpeed; }
            set { mSpeed = value; }
        }
        

        #endregion
        #region PublicLogic
        public abstract void Eat();
        public abstract void Reproduct();
        public abstract void Move();
        public abstract void Sleep();
        #endregion
        #region Fields

        private byte mAge;
        private double mWeight;
        private double mLength;
        private double mSpeed;
        private string mName;

        #endregion
    }
}
